package com.uzai.console.service.user;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.console.dto.TbUserInfo.TbUserInfoIdDto;
import com.uzai.console.dto.TbUserInfo.TbUserInfoQuery;
import com.uzai.console.dto.TbUserInfo.TbUserInfoUpdateDto;
import com.uzai.console.dto.user.UserUpdateMarketingTagDto;
import com.uzai.console.dto.user.useraccdetail.UserAccDetailQuery;
import com.uzai.console.dto.user.wechatuser.*;
import com.uzai.console.dto.user.wxpubuser.*;
import com.uzai.console.dto.user.wxpubuser.UpdateMarketingRewardDto;
import com.uzai.console.dto.user.wxpubuser.UpdateSubscribeInfoDto;
import com.uzai.console.dto.wxpub.UpdateWechatUserDto;
import com.uzai.console.vo.tbuserinfo.TbUserInfoVo;
import com.uzai.console.vo.user.useraccdetail.UserAccDetailInfoVo;
import com.uzai.console.vo.user.wxpubuser.WxpubUserInfoVo;
import com.uzai.console.vo.user.wxpubuser.WxpubUserPageVo;
import org.springframework.web.bind.annotation.RequestBody;

public interface WxpubUserService {
    /**
     * 分页查询微信用户列表
     *
     * @param wxpubUserQuery
     * @return null
     */
    Page<WxpubUserPageVo> findUserList(WxpubUserQuery wxpubUserQuery);

    /**
     * 分页查询下级微信用户列表
     *
     * @param findSonWxpubUserListQuery
     * @return null
     */
    Page<WxpubUserPageVo> findSonUserList(FindSonWxpubUserListQuery findSonWxpubUserListQuery);

    /**
     * 查询微信用户详情
     *
     * @param wxpubUserIdDto
     * @return null
     */
    WxpubUserInfoVo findUserInfo(WxpubUserIdDto wxpubUserIdDto);

    /**
     * 根据单个机器人群发消息(异步)
     *
     * @param wxpubUserBatchSendMsgDto
     * @return null
     */
    void groupSendMsgByDeviceUniqueId(WxpubUserBatchSendMsgDto wxpubUserBatchSendMsgDto);

    /**
     * 删除所有查询的会员数据
     *
     * @param wxpubUserBatchDeleteDto
     * @return null
     */
    void deleteUserSelected(WxpubUserBatchDeleteDto wxpubUserBatchDeleteDto);

    /**
     * 删除用户信息
     *
     * @param id
     * @return null
     */
    void deleteUserById(Long id, Long merId);

    /**
     * 删除下级用户信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxpubUserDeleteSonDto
     * @return null
     */
    void deleteSonWxpubUser(WxpubUserDeleteSonDto wxpubUserDeleteSonDto);

    /**
     * 分页查询微信用户账户明细列表
     *
     * @param wxpubUserAccDetailQuery
     * @return null
     */
    Page<UserAccDetailInfoVo> findUserAccDetailList(UserAccDetailQuery wxpubUserAccDetailQuery);

    /**
     * 分页查询用户会员渠道ID列表
     *
     * @param tbUserInfoQuery
     * @return null
     */
    Page<TbUserInfoVo> findTbUserInfoList(TbUserInfoQuery tbUserInfoQuery);


    /**
     * 修改会员渠道ID
     *
     * @param tbUserInfoUpdateDto
     * @return null
     */
    void updateTbUserInfo(TbUserInfoUpdateDto tbUserInfoUpdateDto);

    /**
     * 删除会员渠道ID
     *
     * @param tbUserInfoIdDto
     * @return null
     */
    void deleteTbUserInfo(TbUserInfoIdDto tbUserInfoIdDto);

    /**
     * 修改微信用户积分余额
     *
     * @param wxpubUserUpdateBalanceDto
     * @return null
     */
    void updateWxpubUserBalance(WxpubUserUpdateBalanceDto wxpubUserUpdateBalanceDto);


    /**
     * 更新微信信息
     *
     * @param wxpubUserIdDto
     * @return null
     */
    WxpubUserInfoVo updateUserInfoFromWechat(WxpubUserInfoVo wxpubUserIdDto);


    /**
     * 单个用户修改信息
     *
     * @param wxpubUserUpdateDto
     * @return null
     */
    void updateToOneUser(WxpubUserUpdateDto wxpubUserUpdateDto);

    /**
     * 修改微信用户详情信息
     * @param wxpubUserInfoUpdateDto
     * @return null
     */
    void updateWxpubUserInfo(WxpubUserInfoUpdateDto wxpubUserInfoUpdateDto);


    /**
     * 修改微信用户定向比例
     */
    void updateWxpubUserPriRewardRules(WxpubUserUpdatePriRewardRulesDto WxpubUserUpdatePriRewardRulesDto);

    /**
     * 修改微信用户会员标签
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param userUpdateMarketingTagDto
     * @return null
     */
    void updateSysTags(UserUpdateMarketingTagDto userUpdateMarketingTagDto);

    /**
     * 加入黑名单
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxpubUserAddBlackDto
     * @return null
     */
    void addBlackUser(WxpubUserAddBlackDto wxpubUserAddBlackDto);


    /**
     * 用户发送消息
     */
    void  sendMessageToOneUser(WxpubUserSendMsgDto wxpubUserSendMsgDto);

    /**
     * 修改互通的的个人微信会员所在的机器人
     */
    void updateInterflowWechatUser(UpdateWechatUserDto updateWechatUserDto);

    /**
     * 修改会员订阅信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param updateSubscribeInfoDto
     * @return null
     */
    void updateSubscribeInfo(UpdateSubscribeInfoDto updateSubscribeInfoDto);


    /**
     * 修改会员营销奖励
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param updateMarketingRewardDto
     * @return null
     */
    void updateMarketingReward(UpdateMarketingRewardDto updateMarketingRewardDto);

}
